package cn.watson.asynchronous;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;

/**
 * @Description: 生产者，消息生产者
 * @Author: Zhangrui
 * @Version: 1.0
 * @Date:  2022/7/25 20:10
 */
public class Producer {

    /**
     * @Title: main
     * @Description: 异步发送
     * @Author: ZhangRui
     * @Version: 1.0
     * @Date:  2022/7/25 22:48
     * @Parameters: [args]
     * @Return void
     */
    public static void main(String[] args) throws Exception {
        // 1.创建生产者，指定生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("Producer_asyn_group");
        // 2.连接MQ,设置NameServer的地址
        producer.setNamesrvAddr("127.0.0.1:9876");
        // 3.启动生产者【启动Producer实列】
        producer.start();
        // 4.发送消息
        // 4.1创建消息体 发送异步消息
        Message message = new Message("hello_topic2", "hello_tags2", "哈哈哈能看到这个消息，说明你成功了，我是异步请求啊！宝！！".getBytes(StandardCharsets.UTF_8));
        producer.send(message, new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println(sendResult);
            }

            @Override
            public void onException(Throwable throwable) {
                throwable.printStackTrace();
                System.out.println("失败啦！！宝");
            }
        });

    }

}
